home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 9
/
The PC-SIG Library on CD ROM - Ninth Edition.iso
/
1601_700
/
DISK1617
/
DISK1617.ZIP
/
DISAMTST.SBA
< prev
next >
Wrap
Text File
|
1990-06-02
|
4KB
|
131 lines
`By Robert Pearce `87283
`DISAMTST.SBA DEMO PROGRAM TO TEST THE DISAM FILE HANDLER
` This is an S-BASIC source module
`***********************************************************************
`** Insure that the file handler is already loaded **
`***********************************************************************
DEF SEG=&H0012 'SET SEGMENT TO DFH3 EPA
X=PEEK(&H0)
DEF SEG 'SET SEGMENT BACK TO BASIC
IF X<>234 THEN
PRINT "DISAM File Handler is not loaded"
STOP
END IF
PRINT " DISAM FILE TEST PROGRAM"
`***********************************************************************
`** Solcit input for the DISAM file handler **
`***********************************************************************
|LOOP
INPUT "Enter function or 'end' ",A$
GOSUB MAKE.LOWER.UPPER
F$=LEFT$(A$,1)
IF F$="E" THEN
SYSTEM 'EXIT
END IF
B1$=""
INPUT "Enter buffer number ",B1$
IF B1$<>"" THEN
B$=B1$ 'ASSUME A NEW BUFFER NUMBER
END IF
IF F$="C" GOTO |SKIP
IF F$="F" GOTO |SKIP
IF F$="O" THEN
QFLAG=0
INPUT "Enter Filename ",R$
GOTO |SKIP
END IF
IF F$="Q" THEN
QFLAG=1
INPUT "Enter Filename ",R$
GOTO |SKIP
END IF
INPUT "Enter record ",R$
`***********************************************************************
`** Finish the function and set the required record lengths **
`***********************************************************************
|SKIP
S=1 'NEED 1 BYTE MINIMUM
IF F$="A" THEN
S=0
END IF
IF F$="P" THEN
S=0
END IF
IF F$="G" THEN
S=255-LEN(R$) 'SET UP RETURN RECORD LENGTH
END IF
F$=F$+","+B$ 'ADD BUFFER NUMBER TO FUNCTION
R$=R$+SPACE$(S) 'PAD USER'S RECORD
`
`***********************************************************************
`** Interact with the DISAM file handler **
`***********************************************************************
DEF SEG=&H0012 'SET SEGMENT DFH3 EPA
DFH3=&H0 'SET ENTRY POINT ADDRESS VALUE
CALL ABSOLUTE (F$,R$,DFH3) 'CALL SUBROUTINE (COMPILED VERSION)
DEF SEG 'SET SEGMENT BACK TO BASIC
`***********************************************************************
`** Test and respond to the return codes **
`***********************************************************************
IF LEN(R$)<>1 THEN
PRINT R$
GOTO |LOOP
END IF
IF R$="0" THEN
PRINT "Function completed successfully"
GOTO |LOOP
END IF
IF R$="1" THEN
PRINT "Record not found"
GOTO |LOOP
END IF
IF R$="2" THEN
PRINT "Record already exists"
GOTO |LOOP
END IF
IF R$="3" THEN
PRINT "End of File"
GOTO |LOOP
END IF
IF R$="4" THEN
PRINT "Record length is either to long or to short"
GOTO |LOOP
END IF
IF R$="5" THEN
PRINT "File sharing not allowed"
GOTO |LOOP
END IF
IF R$="7" THEN
PRINT "DISAM file not found"
GOTO |LOOP
END IF
IF R$="8" THEN
PRINT "The buffer requested is currently in use"
GOTO |LOOP
END IF
PRINT "Invalid DISAM Request"
GOTO |LOOP
END